/*
Goodbee.java
Joseph Christopher Luttmann
Carnet: 10048
Seccion: 10
Fecha: 07 de Julio del 2011
Descripcion: Objeto Radio
*/

public class Goodbee implements NuestraInterfaz{
	
	// -- Atributos -- //
	private double estacion;  		// indica la estacion actual del radio
	private double[] memoriaam;   	// indica una estacion de radio almacenada en una memoria de AM (1-12)
	private double[] memoriafm;     // indica una estacion de radio almacenada en una memoria de FM (1-12)
	private int memo;               // indica la memoria actual
	private String frecuencia;      // indica en que frecuencia (AM o FM) se encuentra el radio 
	private boolean pow;
	// -- Variables -- //

	

	// -- Metodos -- //
	
	// Metodo Constructor
	public Goodbee(double estacion, String frecuencia, int memo){
		pow = false;
		this.estacion = estacion;
		this.memoriaam = new double[12];
		for(int x = 0; x<12; x++){
			memoriaam[x] = 530 + 10 * x; 
		}
		this.memoriafm = new double[12];
		for(int y = 0; y<12; y++){
			memoriafm[y] = 87.9 + 0.2 * y;
		}
		this.memo = memo;
		this.frecuencia = frecuencia;
	}
	
	
	
	
	// Metodo Power
	
	public boolean power(){
		pow = true;
		return true;
	}
	
	// Metodo Cambio
	
	public boolean cambio(){
		if(pow == true && frecuencia.equalsIgnoreCase("AM")){
			frecuencia = "FM";
			estacion = 87.9;
			return true;
		}
		else{
			frecuencia = "AM";
			estacion = 530;
			return false;
		}
	}
	
	// Metodo Fwd
	
	public void fw(){
		if(pow == true && frecuencia.equalsIgnoreCase("AM") ){
			if(estacion >= 1610){
				estacion = 530;
			}
			else {
				estacion += 10;
			}
		}
		if(pow == true && frecuencia.equalsIgnoreCase("FM")){
			if(estacion >= 107.9){
				estacion = 87.9;
			}
			else{ 
				estacion += 0.2;
				estacion = (double)Math.round(estacion*10)/10;
			}
		}
	}
	
	// Metodo Rew
	
	public void bw(){
		if(pow == true && frecuencia.equalsIgnoreCase("AM")){
			if(estacion <= 530){
				estacion = 1610;
			}
			else{
				estacion -= 10;
			}
		}
		if(pow == true && frecuencia.equalsIgnoreCase("FM")){
			if(estacion <= 87.9){
				estacion = 107.9;
			}
			else{
				estacion -= 0.2;
				estacion = (double)Math.round(estacion*10)/10;
			}
		}
	}
	
	// Metodo store
	// toma como parametro un entero x para saber en que memoria (1-12) el usuario desea almacenar una estacion.
	public void store(int boton){
		if(pow == true && frecuencia.equalsIgnoreCase("AM")){
			memoriaam[boton] = estacion;
			memo = boton;
		}
		if(pow == true && frecuencia.equalsIgnoreCase("FM")){
			memoriafm[boton] = estacion;
			memo = boton;
		}
	}
	
	// Metodo select 
	// toma como parametro un entero y
	public void select(int botons){
		if(pow == true) {
			if (frecuencia.equalsIgnoreCase("AM")){
				estacion = memoriaam[botons];
				memo = botons;
			}
			else{
				estacion = memoriafm[botons];
				memo = botons;
			}
		}
	}
	
	public void salir(){
	}

	
	// Metodo ToString
	
	public String toString(){
		int num = memo + 1;
		String descripcion = "";
		descripcion += "estacion: " + estacion + " \n";
		descripcion += "memoria: " + num + " \n";
		descripcion += "frecuencia: " + frecuencia + " \n";
		return descripcion;
	}
	
}